Мгновенный запуск почти любой OS под Linux используя libvirt + qemu / Хабр

您所在的位置:网站首页 openstack command not found Мгновенный запуск почти любой OS под Linux используя libvirt + qemu / Хабр

Мгновенный запуск почти любой OS под Linux используя libvirt + qemu / Хабр

#Мгновенный запуск почти любой OS под Linux используя libvirt + qemu / Хабр| 来源: 网络整理| 查看: 265

По ходу работы над CoreOS и Kubernetes мне приходилось часто воспроизводить окружения пользователей, чтобы помочь им решить проблему. Согласитесь, что при запуске OS при помощи контейнера, не всегда можно добиться полного функционала OS, т.к. часто приходилось решать вопросы, связанные с systemd.

Так и родилась идея написать костыли, которые с легкостью помогут мне поднять кластер из почти любой оперционной системы, эдакий OpenStack в миниатюре. В настоящий момент в качестве гостевых полностью поддерживаются следующие OS:

Ubuntu Debian CentOS 6/7 + atomic Fedora + atomic CoreOS

Частично:

FreeBSD (требуется ручная настройка сети и ssh ключей) openSUSE (требуется ручная настройка сети и ssh ключей) Windows (в консоль не попадёшь, но при помощи virt-manager можно пользоваться графическим интерфейсом)

Публикации поспособствовал коллега, который случайно увидел, как я тестирую код. А теперь о преимуществах перед Vagrant. Первое преимущество — время. Например, три виртуальные машины создаются всего за 20-30 секунд.

image

На момент начала работы над скриптами Vagrant под Linux мог запускать образы исключительно используя VirtualBox, поддержка libvirt/qemu была еще сырая. Для VirtualBox приходилось искать специально подготовленные образы и перезапуск кластера из виртуальных машин занимал значительное время.

В настоящий момент большинство разработчкиов операционных систем предоставляют образы, подготовленные для работы в окружении OpenStack ("cloud" образы). Эти образы очень удобно настраивать благодаря наличию в них cloud-init. С помощью cloud-init на этапе первой загрузки можно с легкостью внедрять в образ публичные ключи SSH и настраивать сеть.

QEMU умеет работать с образами виртуальной машины как со слоями (spanshots, почти как Docker). Мы можем скачать официальный "cloud" образ и использовать его как базовый для всех виртуальных машин из кластера. В этом случае все изменения на диске будут записываться как разность между базовым образом и текущим состоянием (как LVM snapshots). Этот способ также позволяет с легкостью удалить все машины и пересоздать их в течение нескольких секунд.

Пример редеплоя 3-х debian машин

Удаляем уже созданный кластер из Debian и пересоздаём его с нуля, используя скачанный официальный образ debian-8.5.0-openstack-amd64.qcow2

$ virsh list Id Name State ---------------------------------------------------- 12 debian1 running 13 debian2 running 14 debian3 running ./remove_cluster.sh debian Are you sure to remove 'debian1 debian2 debian3 '? (Type 'y' when agree) y Domain debian1 destroyed Domain debian1 has been undefined Vol debian1.qcow2 deleted # Host debian1 found: line 8 /home/user/.ssh/known_hosts.debian updated. Original contents retained as /home/user/.ssh/known_hosts.debian.old Domain debian2 destroyed Domain debian2 has been undefined Vol debian2.qcow2 deleted # Host debian2 found: line 9 /home/user/.ssh/known_hosts.debian updated. Original contents retained as /home/user/.ssh/known_hosts.debian.old Domain debian3 destroyed Domain debian3 has been undefined Vol debian3.qcow2 deleted Host debian3 not found in /home/user/.ssh/known_hosts.debian Pool debian destroyed Pool debian has been undefined $ date && time ./deploy_vms_cluster.sh -o debian -s 3 && date Thu Aug 25 10:26:15 CEST 2016 #


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3